home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Source Code
/
Libraries
/
Dots & Pixels
/
sources
/
scrolling_noise.cp
< prev
next >
Wrap
Text File
|
1995-09-29
|
2KB
|
108 lines
#include <stdlib.h>
#include <Windows.h>
#include <QDOffscreen.h>
#include <Memory.h>
#include <Fonts.h>
#include <Packages.h>
#include <SegLoad.h>
#include <ToolUtils.h>
#include <TextEdit.h>
#include <Files.h>
#include "C_randomizer.h"
#include "general.h"
#include "port.h"
#include "gworld.h"
#include "scrolling_noise.h"
scrolling_noise::scrolling_noise( int breedte, int hoogte, int diepte,
short dh, short dv, port &original)
: gworld( breedte, hoogte, diepte, original)
{
init( breedte, hoogte, diepte, dh, dv);
}
scrolling_noise::scrolling_noise( int breedte, int hoogte, int diepte,
short dh, short dv, CTabHandle cTable)
: gworld( breedte, hoogte, diepte, cTable)
{
init( breedte, hoogte, diepte, dh, dv);
}
void scrolling_noise::init( int breedte, int hoogte, int diepte, short dh, short dv)
{
d_h = dh;
d_v = dv;
//
// We could improve on this; if both dh and dv are nonzero there is
// some overlap between destHorRect and destVertRect. It probably is
// not worthwile to optimize for this, however.
//
if( d_h > 0)
{
newHor = new gworld( d_h, hoogte, diepte);
SetRect( &origHorRect, 0, 0, d_h, hoogte);
SetRect( &destHorRect, 0, 0, d_h, hoogte);
} else if( d_h < 0) {
newHor = new gworld( -d_h, hoogte, diepte);
SetRect( &origHorRect, 0, 0, -d_h, hoogte);
SetRect( &destHorRect, breedte + d_h, 0, breedte, hoogte);
} else {
newHor = 0;
}
if( d_v > 0)
{
newVert = new gworld( breedte, d_v, diepte);
SetRect( &origVertRect, 0, 0, breedte, d_v);
SetRect( &destVertRect, 0, 0, breedte, d_v);
} else if( d_v < 0) {
newVert = new gworld( breedte, -d_v, diepte);
SetRect( &origVertRect, 0, 0, breedte, -d_v);
SetRect( &destVertRect, 0, hoogte + d_v, breedte, hoogte);
} else {
newVert = 0;
}
fill_random();
}
scrolling_noise::~scrolling_noise()
{
if( newHor != 0)
{
delete newHor;
}
if( newVert != 0)
{
delete newVert;
}
}
void scrolling_noise::step() const
{
scroll( d_h, d_v);
if( newHor != 0)
{
newHor->fill_random();
copyfrom( *newHor, origHorRect, destHorRect);
}
if( newVert != 0)
{
newVert->fill_random();
copyfrom( *newVert, origVertRect, destVertRect);
}
}